package serializer;

/**
 * @author zy.jordan
 */
public interface Serializer {

  /**
   * JSON序列化
   */
  byte JSON_SERIALIZER = 1;

  /**
   * 默认的是JSON的序列化算法
   */
  Serializer DEFAULT = new JSONSerializer();

  /**
   * 序列化算法
   *
   * @return byte
   */
  byte getSerializerAlgorithm();

  /**
   * 序列化
   *
   * @param object
   * @return byte[]
   */
  byte[] serialize(Object object);

  /**
   * 反序列化
   *
   * @param klass
   * @param bytes
   * @param <T>
   * @return klass Object
   */
  <T> T deserialize(Class<T> klass, byte[] bytes);
}
